<?php

namespace App\Models;

use App\User;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
use Spatie\Activitylog\Traits\LogsActivity;

class EduTopic extends Model
{
    use LogsActivity,Searchable;
    //设置$logName属性的内容后,这个模型变动记入网站活动日志表的时候log_name字段的值就是这里自定义的值
    protected static $logName = 'edu_topic';
    //定义下面的属性后,表示这个模型只有发生属性中定义的动作的时候才会被记入到"全站动态日志表中"
    protected static $recordEvents = ['created','updated'];
    //在模型中设置可以向数据表中填充的字段
    protected $fillable = ['title','content','category_id','user_id'];

    //EduTopic帖子表和User用户表关联的方法
    function user(){
        return $this->belongsTo(User::class);
    }
    //EduTopic帖子表和帖子栏目表关联的方法
    function category(){
        return $this->belongsTo(EduCategory::class);
    }
    //下面的方法是通过多态关联的方式实现点赞的功能
//用户发布的帖子使用下面的多态关联zan方法就能通过"动态属性"的方式方便地从多态关联zan表中获取当前帖子的点赞信息
//同时通过下面的zan()方法也可以通过多态关联的方式向多态关联zan表中新增帖子对象的点赞信息
    function zan(){
        return $this->morphMany(EduZan::class,'zan');
    }

    //通过多态的方式关联评论表
    function comment(){
        return $this->morphMany(Comment::class,'comment');
    }
    //下面的方法是通过多态关联的方式实现收藏功能
    //好处1:可以通过多态关联的方式向多态关联收藏表中新增帖子的收藏信息
    //好处2:可以通过"动态属性"的方式获取当前帖子的收藏信息
    function store(){
        return $this->morphMany(EduStore::class,'store');
    }
    //设置一个link()方法用来指定帖子的展示链接
    function link(array  $params=[]){
        //这写得真是巧妙呀
        array_unshift($params,$this);
        return route('edu.topic.show',$params);
    }


}
